Systems and methods for sorting image acquisition settings for pattern stitching and decoding using multiple captured images

ABSTRACT

Systems and methods are described for acquiring and decoding a plurality of images. First images are acquired and then processed to attempt to decode a symbol. Contributions of the first images to the decoding attempt are identified. An updated acquisition-settings order is determined based at least partly upon the contributions of the first images to the decoding attempt. Second images are acquired or processed based at least partly upon the updated acquisition-settings order.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation-in-part of pending U.S. applicationSer. No. 13/843,057, which was filed on Mar. 15, 2013, which is herebyincorporated by reference.

STATEMENT REGARDING FEDERALLY SPONSORED RESEARCH OR DEVELOPMENT

Not applicable.

BACKGROUND OF THE TECHNOLOGY

The present technology relates to imaging systems and methods fordecoding images, and more specifically, to imaging systems and methodsfor determining an order for applying image acquisition settings duringthe acquisition of multiple images.

Imaging systems use image acquisition devices that include camerasensors to deliver information on a viewed subject. The system theninterprets this information according to a variety of algorithms toperform a programmed decision-making and/or identification function. Foran image to be most-effectively acquired by a sensor in the visible, andnear-visible light range, the subject is typically illuminated.

Symbology reading (also commonly termed “barcode” scanning) using animage sensor, entails the aiming of an image acquisition sensor (CMOScamera, CCD, etc.) at a location on an object that contains a symbol (a“barcode” for example), and acquiring an image of that symbol. Thesymbol contains a set of predetermined patterns that represent anordered group of characters or shapes from which an attached dataprocessor (for example a microcomputer) can derive useful informationabout the object (e.g. its serial number, type, model, price, etc.).Symbols/barcodes are available in a variety of shapes and sizes. Two ofthe most commonly employed symbol types used in marking and identifyingobjects are the so-called one-dimensional barcode, consisting of a lineof vertical stripes of varying width and spacing, and the so-calledtwo-dimensional barcode consisting of a two-dimensional array of dots orrectangles.

In many imaging applications, surface features, illumination, partmovement, vibration or a multitude of other variations can result inindividual images of a symbol that, on their own, can each be partiallyunreadable. For example, an imaging system can capture a plurality ofimages of a symbol on an object as the object is moving down a conveyorline. In this arrangement, relative movement between the imaging deviceand the object can occur, as well as other phenomenon detrimental toimage analysis (e.g., as noted above). Accordingly, the symbol in one ormore of the images can be partially unreadable.

While the exemplary machine vision detector may acquire multiple imagesof the object/feature of interest as it passes through the field ofview, each image is used individually to perform a detection and/ortriggering function.

BRIEF SUMMARY OF THE TECHNOLOGY

The present embodiments overcome the disadvantages of the prior art byproviding systems and methods for determining an order for applyingimage acquisition settings, for example exposure time or light settings,during the acquisition of multiple images, which may be useful, in someembodiments, for decoding symbol data based upon information frommultiple images of the symbol. Multiple images can be acquired, and theimages assigned a point value associated with an attempted decoding ofthe images. An acquisition settings table can then be sorted based atleast partly on the assigned point values, with a subsequent capture orprocessing of a set of images utilizing different image acquisitionsettings with an order based upon the sorted order of the acquisitionsettings table.

Accordingly, some embodiments comprise a method for decoding a symbolusing images of the symbol. The method can include generating asynthetic model of the symbol, including a model of a plurality of knownfeatures of the symbol. A first image and a second image for a firstread cycle can be acquired, using an imaging device, with the firstimage being acquired using first acquisition settings and including afirst symbol data region, and the second image being acquired usingsecond acquisition settings and including a second symbol data region.The synthetic model of the symbol can be compared with the first andsecond image and first and second binary matrices, respectively, can beextracted. The first binary matrix can be at least partly combined withthe second binary matrix and a combined binary matrix generated, withthe combined binary matrix being a decodable representation of thesymbol. An attempt to decode the symbol can be made based at leastpartly upon the combined binary matrix. First and second contributions,respectively, of the first and second images to the attempt to decodethe symbol can be identified. An updated acquisition-settings order canbe determined for at least the first and second acquisition settings,based at least partly upon the first and second contributions. Theimaging device can be caused to acquire a third image for a second readcycle, using third acquisition settings determined based at least partlyupon the updated acquisition-settings order.

Other embodiments comprise another method for decoding a symbol usingimages of the symbol, where first images have been acquired in a firstacquisition order with an imaging device using an initial sequence ofrespective acquisition settings that is determined based at least partlyupon an initial acquisition-settings order. The method can includeprocessing the first images to attempt to decode the symbol by, at leastin part, stitching image data from two or more of the first images. Acorresponding at least one contribution to the attempt to decode thesymbol can be identified for at least one of the two or more of thefirst images that was acquired using at least one of the initialacquisition settings. An updated acquisition-settings order can bedetermined for the collective initial acquisition settings based atleast partly upon the at least one contribution. Second images can beacquired with the imaging device using an updated sequence of secondacquisition settings that is determined based at least partly upon theupdated acquisition-settings order or the second images can be processedin a decoding attempt using a processing order that is determined basedat least partly upon the updated acquisition-settings order.

Consistent with the above, some embodiments include a system fordecoding a symbol using images of the symbol. An imaging device can beconfigured to acquire multiple images, with each of the acquired imagesincluding a respective symbol data region. A processor operativelycoupled to the imaging device can be configured to receive a firstplurality of images for a first read cycle of the system. The firstplurality of images can be acquired by the imaging device in a firstacquisition order using respective acquisition settings, and can includefirst and second images that are acquired, respectively, using first andsecond acquisition settings determined according to an initialacquisition-settings order. The processor can be further configured toexecute a data stitching algorithm including generating a syntheticmodel of the symbol, including a model of a plurality of known featuresof the symbol, comparing the synthetic model of the symbol with at leastthe first and second images, converting a first symbol data region ofthe first image into a first binary matrix, converting a second symboldata region of the second image into a second binary matrix, at leastpartly combining the first binary matrix with the second binary matrixto generate a combined binary matrix that includes a decodablerepresentation of the symbol. The processor can be further configured toattempt to decode the symbol based at least partly upon the combinedbinary matrix and to receive a second plurality of images for a secondread cycle of the system. The second plurality of images can be acquiredby the imaging device in a second acquisition order using updatedacquisition settings that are determined according to an updatedacquisition-settings order. The updated acquisition-settings order canbe determined based at least partly upon first and second contributionsof the first and second images, respectively, to the attempt to decodethe symbol.

Still other embodiments include a system for decoding a symbol usingimages of the symbol. An imaging device can be configured to acquiremultiple images, with each of the acquired images including a respectivesymbol data region. A processor operatively coupled to the imagingdevice can be configured to receive a first plurality of images for afirst read cycle of the system. The first plurality of images can beacquired by the imaging device in a first acquisition order usingrespective acquisition settings, and can include first and second imagesthat are acquired, respectively, using first and second acquisitionsettings determined according to an initial acquisition-settings order.The processor can be further configured to execute a data stitchingalgorithm including generating a synthetic model of the symbol,including a model of a plurality of known features of the symbol,comparing the synthetic model of the symbol with at least the first andsecond images, converting a first symbol data region of the first imageinto a first binary matrix, converting a second symbol data region ofthe second image into a second binary matrix, at least partly combiningthe first binary matrix with the second binary matrix to generate acombined binary matrix that includes a decodable representation of thesymbol. The processor can be further configured to attempt to decode thesymbol based at least partly upon the combined binary matrix and toreceive a second plurality of images for a second read cycle of thesystem. The second plurality of images can be processed for decoding ina processing order that can be determined based at least partly uponfirst and second contributions of the first and second images,respectively, to the attempt to decode the symbol.

To the accomplishment of the foregoing and related ends, the technology,then, comprises the features hereinafter fully described. The followingdescription and the annexed drawings set forth in detail certainillustrative aspects of the technology. However, these aspects areindicative of but a few of the various ways in which the principles ofthe technology can be employed. Other aspects, advantages and novelfeatures of the technology will become apparent from the followingdetailed description of the technology when considered in conjunctionwith the drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

FIG. 1 is a schematic view of a typical vision system configurationincluding a fixed scanner for acquiring a plurality of images of anobject, in accordance with the present embodiments;

FIGS. 2-7 are views of various 2D matrix symbol features and styles;

FIG. 8 is a view of a located promising candidate region and backgroundclutter in an image;

FIGS. 9 and 10 are a first and second image of an object and showing twopromising candidate regions;

FIG. 11 is an image showing a binary matrix of the first promisingcandidate in the first image of FIG. 9;

FIG. 12 is an image showing a binary matrix of the second promisingcandidate in the first image of FIG. 9;

FIG. 13 is an image showing a binary matrix of the first promisingcandidate in the second image of FIG. 10;

FIG. 14 is an image showing a binary matrix of the second promisingcandidate in the second image of FIG. 10;

FIG. 15 is an image showing an accumulated binary matrix that stitchedthe binary matrix of the first promising candidate in the first image ofFIG. 9 and the binary matrix of the first promising candidate in thesecond image of FIG. 10;

FIG. 16 is an image showing an accumulated binary matrix that stitchedthe binary matrix of the second promising candidate in the first imageof FIG. 9 and the binary matrix of the second promising candidate in thesecond image of FIG. 10;

FIG. 17 shows a first image of a symbol;

FIG. 18 shows a subsequent, or second image of the same symbol in FIG.17, and showing the symbol slightly moved;

FIG. 19 shows a synthetic model usable with a correlation technique;

FIG. 20 shows the symbol position for which the correlation between thesynthetic symbol model and the second image is the highest within aparameter space of scale and position;

FIG. 21 shows a refined promising region in the second image;

FIG. 22 shows a first image of a symbol using a bright fieldillumination with a promising candidate region enclosing a damaged dataregion;

FIG. 23 shows a second image of the symbol of FIG. 22 with an unknownpolarity;

FIG. 24 shows a first DOH image using a light-on-dark filter;

FIG. 25 shows a second DOH image using a dark-on-light filter;

FIG. 26 shows the decodable stitched and accumulated binary matricesfrom the first image of FIG. 22 and the second image of FIG. 23;

FIG. 27 is a schematic view of an image acquisition and point allocationoperation, with an acquisition settings table;

FIG. 28 is a schematic view of another image acquisition operation, withthe acquisition settings table of FIG. 27 sorted according to oneembodiment of the disclosure;

FIG. 29 shows a table with an index of example image acquisitionsettings for a point allocation, table sorting and image acquisitionoperation;

FIG. 30 shows a table representing a set of read cycles for imagescaptured with image acquisition settings from the table of FIG. 29, andpoint allocations for the images based on results of the read cycles;

FIG. 31 shows the point allocations of FIG. 30, scaled for calculationof average sorting values for an acquisition settings table;

FIG. 32 shows an exponential moving average of sorting values calculatedbased on the scaled point allocations of FIG. 31;

FIG. 33 shows sorted orders of the averaged sorting values of FIG. 32;

FIG. 34 shows the sorted orders of FIG. 32 in a first table, with imageacquisition settings contributing to successful symbol decodingpresented in a second, separate table;

FIG. 35 shows updated orders for image acquisition settings based on thefirst and second tables of FIG. 34; and

FIG. 36 shows different sets of images used for different decodingattempts.

While the technology is susceptible to various modifications andalternative forms, specific embodiments thereof have been shown by wayof example in the drawings and are herein described in detail. It shouldbe understood, however, that the description herein of specificembodiments is not intended to limit the technology to the particularforms disclosed, but on the contrary, the intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the technology as defined by the appended claims.

DETAILED DESCRIPTION OF THE TECHNOLOGY

The various aspects of the subject technology are now described withreference to the annexed drawings, wherein like reference numeralscorrespond to similar elements throughout the several views. It shouldbe understood, however, that the drawings and detailed descriptionhereafter relating thereto are not intended to limit the claimed subjectmatter to the particular form disclosed. Rather, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the claimed subject matter.

As used herein, the terms “component,” “system,” “device” and the likeare intended to refer to either hardware, a combination of hardware andsoftware, software, or software in execution. The word “exemplary” isused herein to mean serving as an example, instance, or illustration.Any aspect or design described herein as “exemplary” is not necessarilyto be construed as preferred or advantageous over other aspects ordesigns.

Furthermore, the disclosed subject matter may be implemented as asystem, method, apparatus, or article of manufacture using standardprogramming and/or engineering techniques and/or programming to producehardware, firmware, software, or any combination thereof to control anelectronic based device to implement aspects detailed herein.

Unless specified or limited otherwise, the terms “connected,” and“coupled” and variations thereof are used broadly and encompass bothdirect and indirect mountings, connections, supports, and couplings.Further, “connected” and “coupled” are not restricted to physical ormechanical connections or couplings. As used herein, unless expresslystated otherwise, “connected” means that one element/feature is directlyor indirectly connected to another element/feature, and not necessarilyelectrically or mechanically. Likewise, unless expressly statedotherwise, “coupled” means that one element/feature is directly orindirectly coupled to another element/feature, and not necessarilyelectrically or mechanically.

As used herein, the term “processor” may include one or more processorsand memories and/or one or more programmable hardware elements. As usedherein, the term “processor” is intended to include any of types ofprocessors, CPUs, microcontrollers, digital signal processors, or otherdevices capable of executing software instructions.

As used herein, the term “memory” includes a non-volatile medium, e.g.,a magnetic media or hard disk, optical storage, or flash memory; avolatile medium, such as system memory, e.g., random access memory (RAM)such as DRAM, SRAM, EDO RAM, RAMBUS RAM, DR DRAM, etc.; or aninstallation medium, such as software media, e.g., a CD-ROM, or floppydisks, on which programs may be stored and/or data communications may bebuffered. The term “memory” may also include other types of memory orcombinations thereof.

Embodiments of the technology are described below by using diagrams toillustrate either the structure or processing of embodiments used toimplement the embodiments of the present technology. Using the diagramsin this manner to present embodiments of the technology should not beconstrued as limiting of its scope. The present technology contemplatesboth an electronic device configuration and systems and methods forstitching and decoding images using data combined from multiple capturedimages.

The various embodiments of a machine vision system will be described inconnection with a fixed mount scanner adapted to scan a 2D matrix symboland capable of decoding a symbol based on locating regions of interestin a plurality of images of the symbol that include unreadable regions,and combining the regions of interest to create a decodable image of thesymbol. That is because the features and advantages of the technologyare well suited for this purpose. Still, it should be appreciated thatthe various aspects of the technology can be applied in other forms ofmachine readable symbols, imaging systems, and imaging applications,including robotic controlled scanners, handheld imaging systems, and anyother imaging system that may benefit from the ability to decode asymbol using image data combined from multiple captured images.

FIG. 1 shows an illustrative machine vision system 30 adapted to acquireone or more images 32 of an object 34 containing a machine readablesymbol 36. Conveyor 38 transports the objects 34 and causes relativemovement between the objects 34 and the field of view 40 of an imagingdevice 42. Exemplary machine vision systems may be used in amanufacturing assembly, test, measurement, automation, and/or controlapplication, among others, as non-limiting examples. Machine visionsystem 30 may use image acquisition software 44 operable to perform anyof various types of image acquisitions.

Imaging device 42 can include a processor 46 used for image processingand decoding, for example. The processor 46 can be coupled to a visionsensor 48, and can either be part of the vision sensor 48, or it can belocally linked to the vision sensor 48. The processor 46 can be encodedwith the image acquisition software 44, or in some embodiments, theimage acquisition software 44 can be run on a separate computing device50 or processor. The image acquisition software 44 can be configured to,among other things, acquire multiple images within a single readingoperation, control illumination, acquire image data, and process/decodethe acquired image data into usable information.

Imaging device 42 can also include a memory medium 52 coupled to thevision sensor 48 and/or the processor 46. The memory medium 52 can beused for storing scanned or processed images 32 and buffering data andcommunications, and the like. A communication line 54 can also becoupled to the imaging device 42, and provide a connection point to anoptional computer 50. The computer 50 can be used for uploading anddownloading scanned or processed images 32, for example. It is to beappreciated that wireless communications are also contemplated. In thisexample, the imaging device 42 can be a conventional fixed mount scannercapable of providing high-angle and/or low-angle illumination, or acombination of high and low-angle illumination.

The various embodiments described herein allow combining image data frommultiple images 32 of the object 34 to enable decoding symbols 36 thatare otherwise not decodable from individual images. In particular, thevarious embodiments will be described in the context of imaging anddecoding 2D matrix symbols. In this example, the symbol 36 is applied ona surface of the object 34 that is generally flat. Because the object 34may be partially covered at times, not illuminated properly, or for anyother reason, some portions of the symbol 36 can be rendered unreadable.

Referring to FIGS. 2-7, a 2D matrix symbol 56 can consist of one or moredata regions 58 that contain nominally square symbol modules 60 set outin a regular array. The data region 58 is partially surrounded by afinder pattern 62 that is generally “L” shaped, and the data region 58can be surrounded on all four sides by a quiet zone 64. A timing pattern66 provides a count of the number of rows and columns in the symbol 36.FIG. 5 illustrates an example of a dark-on-light 2D matrix symbol 56,and FIG. 6 illustrates an example of a light-on-dark 2D matrix symbol70. Alignment patterns 72 can also be included, and are typically usedwith larger grid size symbols (see FIG. 7.)

Machine vision system 30 may use symbol locating software 74 thatlocates 2D matrix symbols based on its rectangular or square shape orthe unique finder pattern 62 and timing pattern 66 to locate promisingcandidates. In some embodiments, the image acquisition software 44 andthe symbol locating software 74 can be combined into one softwareapplication, and in other embodiments, the image acquisition software 44and the symbol locating software 74 can be separate softwareapplications. Either or both the image acquisition software 44 and thesymbol locating software 74 can reside and execute on the computer 50 oron the imaging device 42.

One embodiment of a symbol locating algorithm is described in U.S. Pat.No. 7,016,539, which is expressly incorporated herein. Other symbollocating algorithms are available and are contemplated for use. In use,the symbol locating software 74 can locate a symbol candidate by lookingfor the finder pattern 62 and/or the timing pattern 66 of the 2D matrixsymbol. When the data region 58 of a symbol is so damaged that thesymbol is not decodable, the symbol locating software 74 may locatemultiple promising candidate regions that match the finder and timingpatterns to a certain degree. A promising candidate region can be aregion of a symbol that is located but is not decodable due to theinsufficient amount of usable data in the image. A promising candidateregion can be considered promising if more than 65 percent, for example,of the symbol modules 60 match expected finder pattern 62, timingpattern 66, and alignment pattern 72 if it is applicable.

Referring to FIG. 8, a promising candidate region 76 can be found usingthe symbol locating algorithm 74. The remaining symbols 78 in the image80, e.g., text and numbers, can be considered as background clutter andignored by the symbol locating software 74 if it does not contain any orenough of the features required to be a 2D matrix symbol, such as afinder pattern 62 and a timing pattern 66. As previously described, theimage acquisition software 44 can acquire multiple images, so when adata region 58 of a symbol is so damaged that the symbol is notdecodable, the symbol locating software 74 can match multiple promisingcandidate regions 76 from multiple images. In some embodiments,different image acquisition parameters can be used in the multipleimages.

Referring to FIGS. 9 and 10, a first image 84 and a second image 86 areshown. The first image 84 taken of an object shows two promisingcandidate regions 88 and 90. The second image 86 is another image takenof the same object, and shows the same two promising candidate regions88 and 90, except, due to some condition, the image data available inthe second image 86 is different than the image data available in thefirst image 84. Image data from these two images 84 and 86, or aplurality of images, can be combined to create decodable data.

As seen in FIG. 9, the symbol locating software 74 can not determinethat the promising candidate region 88 is a false promising regionbecause it contains features the symbol locating algorithm is lookingfor, such as a finder pattern. This false candidate region can be animage of other symbologies or text or textures, for example. The symbollocating algorithm 74 can determine that the promising candidate region90 is a 2D matrix symbol, which includes a promising data region 92 anda damaged region 94 on its right side (no symbol modules 60 appeared inthe damaged region 94).

FIG. 10 shows the second image 86 of the two promising candidate regions88 and 90. In this second image, the promising candidate region 88 isagain a false promising region because it contains features the symbollocating software is looking for but the data modules are not decodable.The symbol locating software 74 can again determine that the promisingcandidate region 90 is a 2D matrix symbol, which, in the second image86, includes a different promising data region 96 enclosing a damageddata region 98 on its left side.

In order to combine the promising candidate region 88 from the firstimage 84 with the promising candidate region 88 from the second image86, and similarly, the promising candidate region 90 from the firstimage 84 with the promising candidate region 90 from the second image86, in an attempt to create decodable data, binary matrices of the twopromising candidate regions 88 and 90 are created and “stitched”together using a data stitching algorithm 100. FIGS. 11-16 show theprogression of creating and stitching binary matrices of promisingcandidate regions 88 and 90.

FIG. 11 shows a binary matrix 102 of promising candidate region 88created from the first image 84. FIG. 12 shows a binary matrix 104 ofpromising candidate region 90 also created from the first image.Similarly, FIG. 13 shows a binary matrix 106 of promising candidateregion 88 created from the second image 86, and FIG. 14 shows a binarymatrix 108 of promising candidate region 90 also created from the secondimage.

FIGS. 15 and 16 show stitched binary matrices developed from both thefirst image 84 and the second image 86 for both promising candidateregion 88 and promising candidate region 90. In FIG. 15, the stitchedbinary matrices 102 and 106 of promising candidate region 88 from thefirst image 84 and the second image 88 remain not decodable from theaccumulative binary matrix 107. Features such as a finder pattern and/ora timing pattern are not detectable by the symbol locating software 74.Conversely, in FIG. 16, the stitched binary matrices 104 and 108 ofpromising candidate region 90 from the first image 84 and the secondimage 86 is decodable from the accumulative binary matrix 109. As can beseen, both a finder pattern 62 and a timing pattern 66 are detectable bythe symbol locating software 74.

In some instances, when a plurality of images are acquired of the samesymbol, the position of the symbol and/or promising candidate regions ofthe symbol, may be changed between images. This can be due to changes inillumination, or just as likely, object motion. Embodiments of thetechnology address changing positions of a symbol in a plurality ofimages by using a correlation (or other comparison) between a syntheticmodel of the symbol and available symbol data 110 in a current image ofthe symbol to find the position association, referred to herein ascorrespondence. The data stitching algorithm 100 can assume that thechange in position can be modeled by using known affine transformationtechniques. When the symbol locating software 74 operates on subsequentimages (not necessarily the next image or images) acquired on the sameobject 24, the symbol locating software 74 or the data stitchingalgorithm 100 can establish the correspondence, e.g., association,between a previously obtained promising candidate region(s) and symboldata 110 in the current image.

FIG. 17 shows a first image 114 and FIG. 18 shows a subsequent, orsecond image 116 of the same symbol 112, where in the second image 116,the symbol 112 has moved (slightly down and to the left) in relation towhere the symbol 112 was located in the first image 114. Because of thismovement between first and second images 114 and 116, a correlation (orother comparison) between the images is developed.

Referring to FIG. 19, according to a correlation (or other comparison)technique, a synthetic model 118 can be created using the data stitchingalgorithm 100. The synthetic model 118 is a model of known features of aparticular symbol, in this example a 2D 8×32 matrix symbol. Thesynthetic model 118 can be generated by using at least one of the knownfinder pattern 62, timing pattern 66, and possibly alignment pattern 72.The correlation (or other comparison) can be done using known imageanalysis methods, including a gray level image analysis or a knownfiltered image analysis, for example. In this example, the dot filteranalysis Determinant of Hessian (DOH) was used to produce a set offeatures, the set of features being enhanced dots 120. DOH is a popularknown technology used to enhance dots. Methods to find thecorrespondence can be expanded to more complicated models, such asperspective models, and polynomial models depending on the applicationand speed requirements. By using the DOH technology, the known symbolmodules 60 should produce a higher DOH response. The set of features canvary for different applications.

Referring to FIG. 20, by using the correlation (or other comparison)technique, the correspondence between the synthetic model 118 and themoved second image 116 can be found. The correspondence can beestablished by maximizing a correlation score in a parameter spaceincluding scale, angle and translation. The shifted set 122 of symbolmodules 66 show a higher DOH response than the modules positions 124estimated from the first symbol region in the first image 114, indicatedthe correlation to the synthetic model 118 is higher. The shifted set122 are the new module positions estimated from correlating thesynthetic model 118 with the DOH response. Finally, with the correlationto the synthetic model 118 established, the second image 116 can berefined according to the correlation to produce a refined promisingregion 126, as seen in FIG. 21. With the new refined second image 126,the data stitching algorithm 100 can be used to stitch together the datamatrix from the first image 114 and the data matrix from refinedpromising region 126, as previously described above. The confidence ofeach sampling point, a sampling point being a symbol module 66, can beobtained and a corresponding accumulative binary matrix 109 (such asshown in FIG. 16) can be updated until the accumulative binary matrix109 result is able to be decoded.

In some embodiments, the data stitching algorithm 100 can analyze imageswith the same or opposite polarities. FIG. 22 shows a first image 128 ofa symbol 130 using a bright field illumination with a promisingcandidate region 132 and a damaged region 134 on the left side. When asecond image 140 (see FIG. 23) is acquired and the polarity of thesecond image is unknown, the data stitching algorithm 100 can be used todetermine the polarity of the second image 140 by analyzing a promisingcandidate region in the second image.

Referring to FIGS. 24 and 25, two DOH images are generated using thesecond image 140, a first DOH image 136 using a light-on-dark filter(FIG. 24) and a second DOH image 138 using a dark-on-light filter (FIG.25). Then, as previously described above, a correlation based method canbe applied to both the first DOH image 136 and the second DOH image 138to find the correspondence in both DOH images 136 and 138. In thisexample, the correlation score from the first DOH image 136 using thelight-on-dark filter is higher than the correlation score from secondDOH image 138 using the dark-on-light filter. Based on the highercorrelation score for the first DOH image 136 using the light-on-darkfilter, the data stitching algorithm 100 determines the polarity of theanalyzed second image 140 to be light-on-dark.

With the polarity determined, the data stitching algorithm 100 canproceed to stitch together the data matrix from the first image 128 andthe data matrix from the analyzed second image 140, as previouslydescribed above. FIG. 26 shows an image 146 of the decodable stitchedand accumulated (or otherwise at least partly combined) binary matrices142 and 144 from the first image 128 and the second image 140,respectively.

In some machine vision systems, such as the machine vision system 30,different image acquisition settings, such as exposure times or lightsettings, may be available for image acquisition. Generally, lightsettings can specify various characteristics of lighting for aparticular image acquisition, including bright field and dark fieldsettings, power ranges (e.g., as applied for bright field or dark fieldsettings), polarity values, and so on. Various examples herein addresslight settings as example image acquisition settings for various readcycles. In other embodiments, other image acquisition settings, such asexposure times or other settings, may additionally (or alternatively) beutilized.

Depending on various factors, including environmental factors in therelevant workspace, obstruction or shadowing of images by robotic orother devices, and so on, images acquired using particular imageacquisition (e.g., light) settings may sometimes contribute more readilyto successful decoding attempts than images acquired using other imageacquisition settings. It may be useful, accordingly, to provide a methodor system for prioritizing image acquisition settings (and, accordingly,images acquired with those image acquisition settings) for use in adecoding attempt or series of decoding attempts. In someimplementations, this can include, for example, a method or system forsorting an acquisition settings table, and determining, based at leastpartly on the sorted order of the table, a prioritized order for imageacquisition settings for a subsequent attempt to decode images. Forexample, an imaging manager (e.g., a manager module in a program forimaging and analyzing symbols on semiconductor wafers) can be configuredto determine a preferential order of image acquisition settings forimage analysis, such that images can be selected for decoding attemptsbased on the place of the image acquisition settings used to acquire theimages within the preferential order.

In some implementations, image acquisition (e.g., light) settings can bestored within an acquisition settings table with a plurality of entries.In such a case, for example, each entry of the acquisition settingstable can include at least an image acquisition (e.g., light) settingfield, which can specify the particular image acquisition settings(e.g., particular light mode, image exposure, image gain, or imageoffset) associated with the corresponding entry of the acquisitionsettings table.

In some implementations, a particular numerical or alpha-numerical codecan be used in the image acquisition setting field to designate aparticular light setting (or other setting) for the corresponding tableentry. For example, light mode codes such as BF1, BF2 and BF3 can beused to specify particular bright field modes, light mode codes such asDF1, DF2, DF3, DF4, DF5 and DF6 can be used to specify dark field modes,and light power values can be specified within a particular numericalrange (e.g., between 0.0 and 127.0). In some implementations, an indexvalue (e.g., 1, 2, 3, 4, 5, and so on) can be used for the imageacquisition setting field of various entries, which a particular indexvalue corresponding to a particular image acquisition setting (e.g., aparticular light setting such as a particular bright or dark field mode,polarity, and power setting). In such a case, for example, a separatelook-up table can specify the particular image acquisition (e.g., light)settings that correspond to particular index values.

In some implementations, a sequence of images, each with a particularimage acquisition (e.g., light) setting, can be acquired by an imagingsystem (e.g., the machine vision system 30). This may be useful in avariety of circumstances, including during initial set-up or subsequenttraining or calibration of an imaging system. For example, when a waferidentification system is being set-up for operation, it may be usefulfor the system to capture images using a number of different imageacquisition (e.g., light) settings, such that it can be determinedwhether particular image acquisition settings contribute more reliablyto successful decoding of acquired images.

In some implementations, a sequence of image acquisition (e.g., lightmode) settings for subsequent image decoding (i.e., an “updated order”for the image acquisition settings) can be specified, based upon theordering of entries in an acquisition settings table. For example, foran attempt to decode a symbol using a set of ten images, the imagingmanager can determine an updated order for image acquisition (e.g.,light mode) settings values that corresponds to the image acquisition(e.g., light mode) setting fields in the first ten entries of a sortedacquisition settings table. Ten images for the decoding attempt can thenbe selected (and, in some cases, acquired) such that the images exhibit,in order, corresponding image acquisition (e.g., light mode) settingsfrom the acquisition settings table. For example, a first image can beselected based on the image having been acquired using a first imageacquisition (e.g., light mode) setting from the sorted order of theacquisition settings table, a second image can be selected based uponhaving been acquired using a second image acquisition (e.g., light mode)setting from the sorted order of the acquisition settings table, and soon. In other implementations, other orders or ways of designating of animage acquisition (e.g., light mode) setting for a particular image (orimages) may also be possible.

In some implementations, the sorting of an acquisition settings tablecan be implemented based upon decoding (or other processing) attempts onalready-acquired images, with the resulting sorted order of theacquisition settings table being used to specify an updated order ofimage acquisition (e.g., light) settings for subsequent image analysis.Referring to FIG. 27, for example, a set 200 of images (e.g., images 200a, 200 b, 200 c, 200 d, and so on) can be acquired by the machine visionsystem 30. Each of the images of the set 200 can be acquired with aparticular light setting. For example, an imaging manager 210 canoperate to access an acquisition table configured as a light settingstable 202 and communicate a set or sequence of light settings from thetable 202 to an image acquisition system (e.g., various modules of theimage acquisition software 44). The image acquisition system can thendirect sequential (or other) acquisition of the set 200 of images usingthe light settings specified by the imaging manager 210.

In some implementations, the set 200 of images can be captured for usewith a particular read cycle (i.e., a particular set of operations fordecoding a symbol at least partly included in the images) for themachine vision system 30. Accordingly, in some implementations, all ofthe images in the set 200 can be processed together, in various ways andcombinations. In other implementations, the set 200 of images can becaptured for use with different read cycles and the images canaccordingly be processed separately, in various ways and combinations.

Generally, the light settings table 202 may be configured in variousways, can include various types of data in addition to light settingsdata (e.g., other image acquisition settings data), and can be includedin (or be accessible by) the image acquisition software 44 (or anotherprogram or module). As depicted, the light settings table 202 includes aset of entries 202 a through 202 h, each including at least a lightsetting field 204 and a sorting values field 206. Generally, values inthe light setting field 204 of various entries in the table 202 specifyparticular light settings (e.g., dark/bright field, power, and so on)and values in the sorting values field 206 specify a value for sortingthe table 202 (e.g., based on ascending or descending order of thevalues in the sorting values field 206). In other implementations, otherconfigurations of the table 202 may be possible, includingconfigurations with additional fields.

In the system depicted, the imaging manager 210 can operate to accessthe light settings table 202 in order to communicate light settings (orother image acquisition settings) from the light settings table 202, asspecified by the light setting field 204 (or other fields), to the imageacquisition software 44 (or another aspect of the machine vision 30,generally). In this way, the image acquisition software 44 (or anothersystem) can determine particular light settings (or other imageacquisition settings) for the acquisition, respectively, of the variousimages of the set 200. Similarly, images acquired with the imageacquisition software 44 may be tagged in various ways (e.g., withmetadata associated with the images) to indicate the particular lightsettings (or other image acquisition settings) used to acquire theimages. For example, images acquired with light settings from the table202 may be tagged with a value representing the associated entry of thelight setting field 204 (e.g., an index value or a value otherwiserepresenting the relevant light setting).

The imaging manager 210 can communicate the light settings (or otherimage acquisition settings) from the table 202 sequentially, as anordered set of light settings, or otherwise, such that the imagingmanager 210 can specify an acquisition (or other) order for the lightsettings (or other image acquisition settings), as well as theparameters of the light settings (or other image acquisition settings)themselves (e.g., power, bright or dark field, and so on), or otherwiseassociated a particular light setting (or other image acquisitionsetting) with a particular image. As depicted, for example, the sortingvalues field 206 can indicate a depicted sorted order for the table 202,with entry 202 a at the top of the table 202 and the entriesprogressing, in order, to entry 202 h at the bottom of the table 202.Accordingly, based on communication with the imaging manager 210, theimage acquisition software 44 can determine that the first four lightsettings of the table 202 (i.e., as indicated by the values for theentries 202 a through 202 d of the light setting field 204) should beutilized, respectively, for acquisition of the first four images 200 athrough 200 d of the set 200, or that the first four light settings ofthe table 202 correspond to the light settings used for acquisition ofthe first four images 200 a through 200 d.

Each of the images of the set 200 (or a subset thereof) can then beprocessed by the image acquisition software 44, in an attempt to decodesymbol(s) (e.g., text characters or two-dimensional matrix symbols suchas Data Matrix symbols) that are included on one or more images in theset 200. Various tools can be used to decode the symbol(s) of the imagesin the set 200. In some implementations, for example, the decodingprocessing can employ a tool for decoding a two-dimensional matrixsymbol (e.g., an algorithm for decoding Data Matrix symbols). In someimplementations, the decoding processing can employ an optical characterrecognition (“OCR”) tool (e.g., an OCR algorithm) for decoding text. Insome implementations, multiple tools may be used. For example,processing the images of the set 200 to attempt to decode a symbol inthe images can include processing the images with both a two-dimensionalmatrix symbol decoding tool and an OCR tool. Various images (e.g., theimages 200 a through 200 d) can be processed for decoding sequentially,or in parallel, with a Data Matrix decoding tool 212 and with an OCRdecoding tool 214. In some implementations, processing for decoding canbe implemented in parallel with active image acquisition.

In some implementations, the processing of the images of the set 200 caninclude individual processing of a subset of the images in the set 200with a particular tool (e.g., a particular algorithm). In someimplementations, a read cycle for a particular tool can includeprocessing of multiple images, including separate processing of multipleimages, and collective processing of various combinations of images (orinformation contained therein or derived therefrom). For example, asdescribed in greater detail above, data from multiple images can bestitched together for collective processing, such that multiple imagescan contribute to decoding of a particular symbol.

Various discussion herein may address examples of stitching data frommultiple images. In some implementations, however, other analysis ofmultiple images may also be used. For example, some images may beanalyzed to decode symbols based upon stitching together the imagesthemselves. It will be understood that, unless otherwise limited orspecified, the discussion herein of prioritizing particular imageacquisition settings may be applied in a variety of operations,including sets of image capture and symbol decoding operations thatemploy stitching of images themselves, rather than (or in addition to)stitching of data from images.

Following the execution of a particular read cycle (e.g., processing toattempt to decode a symbol on one or more images of the set 200), pointvalues can be assigned to particular images (and thereby associated withthe image acquisition setting used to capture those images) based uponthe processing of the images in the read cycle. Generally, such pointvalues can be assigned from a predefined number of total points, withall of the number of total points being assigned among a particular setof images. For example, where 1000 total points are available forassignment, all of the 1000 points can be assigned among a set ofimages, with different images of the set receiving different assignmentsof numbers based upon the contribution of the particular image to thedecoding operation.

In some implementations, points may be assigned to images that have beenused by a particular tool to successfully decode a symbol during a readcycle. For example, if the OCR tool 214 successfully decodes a symbolduring a read cycle that includes analysis of each of the set 200 ofimages (or a subset thereof), a predefined number of total points (e.g.,1000 points) can be assigned among the images of the set 200 (or subsetthereof), such that all of the predefined total points are assigned tothe entire set 200 of images (or subset thereof). Points may be assignedby the imaging manager 210, in some implementations, or by othersoftware, modules, hardware, and so on.

Where only a single image is utilized for a successful read cycle ordecoding attempt (e.g., when a “singleton” results in a successfuldecode), all of the predefined number of total points can be assigned tothe single image. Where multiple images are utilized for a successfulread cycle, point values can be assigned among the multiple images invarious ways, including in relative proportion to the contribution ofparticular images to the successful decode. In some implementations, forexample, one decoding attempt for the set 200 of images can includestitching together data from the images 200 a, 200 b, and 200 c forcollective processing to decode a common symbol. If the image 200 a isused as a primary image for the decoding processing and the images 200 band 200 c are used as secondary images for the decoding processing, halfof the available points (e.g., 500 points) can be assigned to the image200 a and the remaining points divided between the images 200 b and 200c (e.g., with 250 points being assigned to each). Generally, pointvalues may be assigned among multiple images based on various factors,such as how much of the symbol content of the respective images can bereliably identified by the read cycle analysis.

In some implementations, certain images processed as part of a readcycle may not contribute to a successful decoding of a symbol. Forexample, still referring to FIG. 27, another decoding attempt for theset 200 of images can include the stitching together of data from theimages 200 a, 200 b, 200 c, and 200 d, in various combinations, fordecoding processing. If the image 200 a is used as a primary image forthe decoding processing, the images 200 b and 200 c are used assecondary images for the decoding processing, and the image 200 d doesnot contribute to the success of the decoding processing, half of theavailable points (e.g., 500 points) can be assigned to the image 200 a,the remaining points can be divided between the images 200 b and 200 c(e.g., with 250 points being assigned to each), and minimal impact(e.g., zero) points can be assigned to the image 200 d. Similarly, ifnone of the images 200 a through 200 d contribute to success of thedecoding processing (e.g., if the read cycle does not successfullydecode a symbol for any data stitching combination of the images 200 athrough 200 d), minimal impact (e.g., zero) points can be assigned toeach of the images 200 a through 200 d.

Where multiple tools contribute to a successful decoding of a symbolduring a successful read cycle, the predefined number of total pointscan be reduced in proportion to the number of tools. In someimplementations, for example, two tools can be used for a particularread cycle. Accordingly, the points available for assignment to imagesprocessed by either tool can be reduced by half such that the number oftotal points can be distributed between both of the tools. For example,if the OCR tool 214 successfully decodes a symbol in a particular readcycle by stitching data from the images 200 a through 200 c and the DataMatrix tool 212 successfully decodes the symbol by stitching data fromthe images 200 c and 200 d, the total number of points available forassignment to the images for each of the tools can be reduced by halffrom the total number of points that would be available if only one ofthe tools had successfully decoded the symbol. As such, for example,half of the total points (e.g., 500 points) may be available forassignment to the images 200 a through 200 c, based on the results ofthe decoding with the OCR tool 214, and half of the total points (e.g.,500 points) may be available for assignment to the images 200 c and 200d, based on the results of the decoding with the Data Matrix tool 212.

In some implementations using multiple tools, points may not be assignedto particular images unless a successful decode attempt has been madefor at least two of the tools. For example, where the system 30 isconfigured to implement an OCR and Data Matrix decoding, point valuesmay sometimes be assigned to images only if both of the tools decode asymbol successfully. In such a configuration, for example, if an OCRtool successfully decodes a symbol during a read cycle, but a DataMatrix tool does not, no points may be assigned to any of the processedimages. In other implementations using multiple tools, points can beassigned for tools that have successfully decoded a symbol but not fortools that do not successfully decode a symbol.

Once points have been assigned based on the decoding attempts, the table202 can then be updated (e.g., by the imaging manager 210). In someimplementations, in order to prioritize the use of light settings (orother image acquisition settings) that previously contributed tosuccessful decoding attempts (e.g., during successful read cycles), thesorted order of the table 202 can be updated based on past decodingresults. This may be accomplished in a variety of ways.

In some implementations, for example, an average such as an exponentialmoving average (“EMA”) can be calculated (e.g., by the imaging manager210) for various entries of the sorting values field 206 and the pointsthat were assigned to corresponding images, following a successful readcycle. For example, where the points assigned to the various images areappropriately scaled to correspond to values of the sorting values field206 for entries of the table 202, the assigned points can be consideredas new data for the sorting values field 206 such that an EMA may bereadily calculated. More specifically, the points assigned to aparticular image can be treated as new data for the sorting values field206 at an entry of the table 202 that corresponds to the light settingused to capture that image. An EMA may then be calculated for theassigned points and the corresponding entries of the sorting valuesfield 206 of the table 202, and the sorting values field 206 can updatedwith the resulting EMA values.

Still referring to FIG. 27, for example, when the light settingindicated by the light setting field 204 for the entry 202 a of thetable 202 is used to acquire the image 200 a, the points assigned to theimage 200 a after processing of the image 200 a for a decoding attemptcan be associated with the sorting values field 206 for the entry 202 a.When an EMA (or other average) is calculated, the point value for theimage 200 a can accordingly be treated as new data for the sortingvalues field 206 for the entry 202 a, such that an EMA for the field 206can be calculated in conventional ways. For example, an EMA for aparticular sorting values field may be calculated as:

EMA=(P·α)+(SVF _(c)·(1−α)),  (1)

where SVF_(c) represents the current value of a relevant entry of thesorting values field 206, P represents the corresponding assignedpoints, and a represents a smoothing factor, which can be calculated,for example, based upon a particular number of images for a relevantcycle.

Similar calculation of EMAs (or other averages) can also be executed forother entries of the sorting values field 206 (e.g., each other entry,or each entry for which a point value has been assigned to acorresponding image). In this way, for example, light settings (or otherimage acquisition settings) that are used to acquire images thatcontribute to a successful read cycle can be provided with an increasedvalue in the associated entry of the sorting values field 206.Similarly, light settings (or other image acquisition settings) that areused to acquire images that do not contribute to a successful read cyclecan be provided with a decreased value in the associated entry of thesorting values field 206.

Once EMAs (or other averages) have been calculated for appropriateentries of the sorting values field 206, using the correspondingassigned points as new data for the EMAs, the entries of the sortingvalues field 206 can be updated with the new EMA values. In someimplementations, the table 202 can then be sorted at least partly basedon the EMA values (i.e., based on the current values of the sortingvalues field 206). Updating of the sorting values field 206 and sortingof the table 202 can be accomplished by the imaging manager 210, or byother software, modules, hardware, and so on.

In some implementations, the table 202 can be sorted (i.e., can beupdated to a new sorted order) based on the values of the sorting valuesfield 206, such that light settings (or other image acquisitionsettings) that contribute to successful decoding can be advanced in thesorted order and light settings (or other image acquisition settings)that do not contribute to successful decoding can be moved downward inthe sorted order. In this way, for example, when images are selected (oracquired) for subsequent decode attempts, images acquired withparticular image acquisition (e.g., light) settings that have previouslycontributed to successful decoding attempts can be prioritized overimages acquired with image acquisition (e.g., light) settings that mayhave been less successful.

Referring also to FIG. 28, for example, if the images 200 c and 200 d(see FIG. 27) contribute to successful decoding and the images 200 a and200 b (see FIG. 27) do not, the images 200 c and 200 d can be assignedmore points than the images 200 a and 200 b. Therefore, after thecalculation of EMAs and updating of the sorting values field 206, are-sorting of the table 202 to a new sorted order, based on the sortingvalues field 206, can place the light settings for the images 200 c and200 d (i.e., as reflected in the light setting field 204 for the entries202 c and 202 d) ahead of the light settings for the images 200 a and200 b (i.e., as reflected in the light setting field 204 for the entries202 a and 202 b). Accordingly, the light settings for the images 200 cand 200 d can be prioritized over the light settings for the images 200a and 200 b in a subsequent image decoding attempts (of the same or adifferent symbol) or other operations. It will be understood, however,that this particular sorted order (i.e., with light settings for theimages 200 c and 200 d ahead of the light settings for the images 200 aand 200 b) may not necessarily be obtained, depending on the results ofthe various EMA calculations and various other factors.

In other implementations, other sorting algorithms or procedures may beused. Further, it will be understood that sorting of the table 202 caninclude virtual sorting of the table 202 via reference to the variousentries of the sorting values field 206, rather than a physicalrewriting of the table entries to different memory locations, or acombination of virtual sorting and physical rewriting of table entries.

Once a sorted order of the table 202 has been updated (e.g., once thetable 202 has been sorted based on the EMA calculations describedabove), a new decoding attempt can be made, with light settings (orother image acquisition settings) for images used in the new decodingattempt being prioritized based on the updated sorted order of the table202. As described above, for example, the imaging manager 210 can accessthe light settings table 202 in order to communicate light settings fromthe light settings table 202, as specified by the light setting field204, to the image acquisition software 44 for processing of another setof images 220. However, in contrast to the sorted order of lightsettings for the set 200 of images (see FIG. 27), the updated sortedorder of the table 202 now indicates that the light settings (or otherimage acquisition settings) for the table entry 202 d should be usedfirst, followed by the light settings (or other image acquisitionsettings) for the table entry 202 c, then the light settings (or otherimage acquisition settings) for the table entries 202 a and 202 b. Assuch, the image acquisition software 44 may first attempt to decode animage 220 a of the set 220 that has light settings corresponding to thetable entry 202 d, may next attempt to decode an image 220 b of the set220 that has light settings corresponding to the table entry 202 c, andso on. Once these new decode attempts are completed, points may beassigned to the images in the set 220 (e.g., as described above), a newEMA can be calculated for the sorting values field 206, and a new sortedorder for the table 202 determined accordingly.

Generally, table entries for the table 202 that have a favored (e.g.,higher) EMA value, as reflected in the values of the sorting valuesfield 206, can be prioritized over (i.e., placed ahead of in the sortedorder or acquisition order) entries for the table 202 that have a lessfavored (e.g., lower) EMA value. In some implementations, however, otherrules may additionally (or alternatively) be used.

In some implementations, if a user provides an image acquisitionsetting, such as a light setting, or related value, the imageacquisition (e.g., light) setting (or related value) provided by theuser can be prioritized over other image acquisition (e.g., light)settings in the table 202, potentially without regard for the sortedorder of the table 202. For example, if a user specifies a particularbright or dark field setting, power setting, or other light settingparameter, decoding attempts can first address images with the lightsetting (or settings) specified by the user before other images withother light settings from the table 202, even if the other lightsettings exhibit a more favored (e.g., larger) value for the sortingvalues field 206 than the light setting specified by the user.

In some implementations, an image acquisition setting (e.g., lightsetting) for an image that contributed to a successful decoding resultin a previous (e.g., immediately preceding) read cycle can beprioritized in a subsequent decoding attempt (for the same or adifferent symbol). For example, referring again to FIG. 27, if the image200 b contributes to a successful decoding attempt, the light settingfor the image 200 b can be used, for a subsequent decoding attempt, toselect an image from the set 220 with the same light setting as theimage 200 b, before selecting other images of the set 220 with lightsettings that did not contribute to a successful decoding (at least in amost recent decoding attempt). This prioritization can be implementedeven if the latter light settings correspond to more favored (e.g.,larger) values for the sorting values field 206 than the light settingfor the image 200 b. Similarly, if multiple images of the set 200 (e.g.,the images 200 a, 200 c and 200 d) contribute to a successful decodingattempt, the light settings for the images 200 a, 200 c and 200 d can beused, for a subsequent decoding attempt, to select images from the set220 with the same light settings as the images 200 a, 200 c and 200 d,before selecting other images of the set 220 with light settings thatdid not contribute to a successful decoding. Again, this prioritizationcan be implemented even if the latter light settings correspond to morefavored (e.g., larger) values for the sorting values field 206 than thelight settings for the images 200 a, 200 c, and 200 d.

In some implementations, further sorting can be implemented within (orotherwise in addition to) the prioritization discussed above. Forexample, the light settings for a set of successfully decoded images(e.g., the images 200 a, 200 c and 200 d) can be prioritized, withrespect to each other, based on EMA values corresponding to thoseimages, even as the light settings of the entire set of images (e.g.,the images 200 a, 200 c, and 200 d) are prioritized above the lightsettings for images that did not contribute to a successful decode.

In some implementations, image acquisition (e.g., light) settings for aparticular tool (e.g., a two-dimensional matrix tool) can be prioritizedover image acquisition (e.g., light) settings for a different tool(e.g., an OCR tool). Prioritizing image acquisition settings forsuccessful decoding attempts based upon the use of a particular tool maybe useful in a variety of ways. For example, one goal of imagerecognition analysis may be to achieve a relatively high read rate andyield of successfully decoded symbols. Accordingly, for example, theimaging manager 210 (or other software, modules, hardware, and so on)may operate to decrease the average read time per imaged product (e.g.,per semiconductor wafer) by specifying light settings that may requireprocessing of a relatively small number of images per product. BecauseData Matrix and other similar tools may often be required to process arelatively large number of images to achieve a successful decode, it maytherefore be useful to prioritize image acquisition (e.g., light)settings for these tools before doing so for other tools. In this way,for example, time-outs of these tools for lack of decodable images maybe avoided.

Accordingly, in some implementations, referring again to FIG. 27, lightsettings for successful decodes using the Data Matrix tool 212 can beprioritized over light settings for successful decodes using the OCRtool 214. For example, if the images 200 a, 200 b and 200 c contributeto a successful decode attempt with the Data Matrix tool 212 and theimage 200 d contributes to a successful decode attempt with the OCR tool214, the light settings 200 a, 200 b, and 200 c may be moved higher inthe sorted order of the table 202 (i.e., may be prioritized) forsubsequent selection of images from the set 220 for decoding, even ifthe light setting for the image 200 d corresponds to a more favored(e.g., larger) value for the sorting values field 206 than the lightsettings for the images 200 a, 200 c, and 200 d.

The various tools, modules, algorithms, and so on discussed above may beimplemented in various ways using various different types of computingdevices and systems. In some implementations, for example, the imagingmanager 210 can be combined into one software application with the imageacquisition software 44 and/or the symbol locating software 74. In otherimplementations, the imaging manager 210 can be a separate softwareapplication from the image acquisition software 44 and/or the symbollocating software 74. In different implementations, the imaging manager210 can reside and execute on the computer 50 or on another device(e.g., the imaging device 42).

Referring now to FIGS. 29 through 35, example data for a pointassignment, table sorting and image decoding operation are presented.Certain tables and values of FIGS. 29 through 35 may reflectintermediary results of various calculations or processing or may bepresented simply to clarify the nature of other tables and values.Accordingly, it will be understood that certain tables and values of theFIGS. 29 through 35 may not necessarily be stored (or stored forsubstantial amounts of time) or even actually utilized by the system 30.Further, as also noted above, the prioritization and sorting techniquesdescribed herein may be used with a variety of image acquisitionsettings. Accordingly, although light settings are presented as specificexamples in the discussion below, it will be understood that similarprinciples may be applied to other types of image acquisition settings.

Referring in particular to FIG. 29, an example index for various lightsettings is provided. As depicted, eighteen different light settings300, designated by bright field (“BF”), dark field (“DF”) and powercodes (“P”), with associated numerical values, are matched to an index302 of eighteen integers. As noted above, a light settings table (e.g.,the table 202) including the light settings of FIG. 29 can include(e.g., in the light setting field 204) the codes of the light settings300 themselves, or can include other values indicative of the lightsettings 300, such as values from the index 302.

In an example operation, images may be acquired using various of thelight settings 300. A set of nine read cycles may be attempted for theacquired images (e.g., after or in parallel with the image acquisition),with each read cycle including an attempt to decode a symbol of anacquired image using both a two-dimensional matrix decoding tool and anOCR tool. A set of example results for such an operation are presentedin FIG. 30. As indicated by the read cycle column 304 of the table ofFIG. 30, each of the read cycles, which are designated as read cycles 1through 9, includes an attempt to decode a symbol from a number ofimages, using a particular two-dimensional matrix decoding tool(designated in a tool column 306 of FIG. 30 as “2-D”) and a particularOCR tool. In some implementations, the 2-D and OCR tools may operate inseries. In some implementations, the 2-D and OCR tools may operate inparallel.

Each image that contributes to a successful decoding result in aparticular read cycle is designated in an index column 308 of FIG. 30 byan index value from the light setting index 302 (see FIG. 29) thatcorresponds to the light setting used to acquire the relevant image. Forexample, in the first read cycle (i.e., “read cycle 1”), the 2-D tool isused to successfully decode a symbol using two images acquired withlight settings BF3 P02 and DF1 P20 (as correspond to the values 11 and 4of the index 302). Similarly, in the first read cycle, the OCR tool isused to successfully decode a symbol using three images acquired withlight settings BF3 P01, DF3 P20, and BF2 P02 (as correspond to thevalues 3, 6, and 9 of the index 302). For each of the other read cycles,except read cycles 6 and 7, other (or the same) values from the index302 similarly indicate other (or the same) light settings of images thathave been used to successfully decode a symbol in the particular readcycle. For read cycle 6, both tools fail to decode a symbol using anyimages, so no value is provided from the light setting index 302. Forread cycle 7, the OCR tool successfully decodes a symbol with asingleton image with light setting DF3 P20 (corresponding to the value 5of the index 302), but the 2-D tool did not successfully decode a symbolwith any images.

In some implementations, data from the images processed for a particularread cycle can be stitched together, as described above, such that thedecoding attempt simultaneously addresses data from multiple images. Forexample, with respect to the first read cycle, the 2-D tool may havesuccessfully decoded a symbol based on an accumulated (or otherwise atleast partly combined) matrix drawn from the two images indicated (i.e.,images captured with light settings corresponding to the index values 11and 4, in the light setting index 302 (see FIG. 29)), and the OCR toolmay have successfully decoded a symbol based on the three imagesindicated (i.e., images captured with light settings corresponding tothe index values 3, 6, and 9, in the index 302). Similar use ofstitching can also be employed for one or more of the other read cycles,although the depicted read cycle 7, as noted above, includes asuccessful decode with a singleton.

It will be understood that the images represented by the values of theindex 302 in the table of FIG. 30 may not necessarily represent all ofthe images captured during a particular acquisition operation, or evenall of the images for which a decode attempt was made for a particularread cycle, including for singleton decodes and decoding attempts usingstitching operations. Rather, as depicted, the table of FIG. 30represents only those images that actually contributed to a successfuldecoding attempt for a particular read cycle. As noted above, it may beuseful, in various implementations, to assign points only to suchcontributing images.

After a successful decoding attempt has been completed for a particularread cycle, a point value can be assigned (e.g., by the imaging manager210) to each of the images that contributed to the successful decoding.As noted above, the magnitude of these point values can generallycorrespond to the relative contribution of the various images to thevarious successful decodes. In FIG. 30, the assigned point values arerepresented in a point value column 316. In the first read cycle of FIG.30, for example, the image captured with light setting BF3 P02(corresponding to the value 11 of the index 302) contributed moresignificantly to the 2-D decoding than the image captured with lightsetting DF1 P20 (corresponding to the value 4 of the index 302).Accordingly, the BF3 P02 image (index value 11) has been assigned 750points (out of 1000) and the DF1 P20 (index value 4) has been assigned250 points.

In contrast, each of the images listed for the successful OCR decodingin the first read cycle contributed approximately equally to thesuccessful decoding, so each image has been assigned 333 points, withone image receiving a rounded-up value of 334 points to ensure that thefull 1000 point total has been assigned for that tool and read cycle. Inother read cycles, as can be seen in FIG. 30, other (or the same) pointvalues have been assigned based on different (or similar) contributionsof various images (and, correspondingly, various light settings) to asuccessful decoding. It can be seen that zero points have been assignedfor read cycle 6, because no successful decoding was achieved.Similarly, zero points have been assigned for the 2-D tool of read cycle7, because no successful decoding using that tool was achieved. In someimplementations, a non-zero minimal impact point value (e.g., a negativenumber of maximal magnitude, or a minimum positive value on a scoringscale) can be assigned instead.

As noted above, during operations including those in which a successfuldecoding by both the OCR and 2-D tools is required, minimal impact(e.g., zero) points may be assigned to read cycles in which only one ofthe tools is successful. In such a case, for example, in the seventhread cycle of FIG. 30, no points may be assigned to the index value 5,because the 2-D tool did not successfully decode a symbol.

As depicted in FIG. 30, a number of total points equal to 1000 has beenassigned for each tool for each successful read cycle. In otherimplementations, other numbers of total points can be used. For example,some implementations may assign a total number of points equal to 1,with various images of a set used for a particular read cycle beingassigned fractions of a point such that the entire set of images isassigned 1 point in total.

As also discussed above, the points assigned to various images can beused to update a sorting values field of an acquisition (e.g., light)settings table. In certain implementations, however, points assigned tovarious images may first need to be scaled appropriately. As depicted inFIG. 31, for example, the total points assigned for decoding operationswith both of the two tools (see FIG. 30) for each read cycle have beenscaled such that the total points for a given read cycle sum to 1000.For example, with respect to the first read cycle, it can be seen fromFIG. 30 that the total points assigned for both the 2-D and OCR toolssum to 2000. Accordingly, these assigned point values have been halved(and rounded, as appropriate) for the first read cycle column (i.e.,column 310) of FIG. 31. Likewise, point values assigned for other readcycles have been scaled as appropriate to ensure uniform total pointvalues for each read cycle. It will be noted that the point valuesassigned for the seventh read cycle (i.e., as reflected in column 314)have not been scaled because only the OCR tool successfully decoded asymbol during that read cycle.

After completion of a particular read cycle (or a relevant portionthereof), an EMA can be calculated for each point value entry (e.g.,each point value entry along column 310) using the point values assignedto each particular image (and corresponding light setting) during theparticular read cycle, and an EMA value for a previous read cycle (oranother initial point value, as discussed below). The results of the EMAcalculation can then be used for entries to a corresponding sortingvalues field of an acquisition (e.g., light) settings table (e.g., thesorting values field 206 of the table 202 in FIGS. 27 and 28). In thisway, for example, the value of the sorting values field for a particularimage (e.g., light) acquisition setting (e.g., for a particular entry inthe index 302 or in the light setting field 204) can be updated toreflect historical decoding results. Accordingly, when an acquisition(e.g., light) settings table is sorted based on the sorting valuesfield, the sorted order of the table can result in prioritization, forsubsequent image processing, of image acquisition (e.g., light) settingsthat have been historically useful.

Referring also to FIG. 32, the successive columns of the depicted tablerepresent the result of successive EMA calculations, based upon the readcycle results and point assignments represented in FIGS. 30 and 31. Asalso noted above, in some implementations, the total number of pointvalues (e.g., 1000, in the example depicted) may have been initiallyassigned relatively equally between all (or a subset) of available lightsettings, in order to provide an initial basis for calculating an EMA(or other average). As can be seen in column 312 of FIG. 32, forexample, the 1000 total points for a given read cycle has been initiallydistributed relatively equally across the entire index 302. In otherimplementations, other initial assignments of points may be used. Forexample, a user may provide a custom initial point assignment that mayreplace the relatively uniform point assignment of column 312. This maybe useful, for example, in order to initially prioritize particularlight settings over others.

Starting from an initial assignment of points (e.g., as represented incolumn 312), or another set of point values (e.g., from previous EMAcalculations), the values of the sorting values field can then beupdated based upon preceding read cycle results. It can be seen fromcolumn 318, for example, that after the first read cycle the relativelyuniform sorting values field values at initiation (i.e., as representedin column 312) have been updated to reflect the successful decodeattempts, during the first read cycle, with images having light settingscorresponding to index values 3, 4, 6, 9, and 11 (see FIG. 30).Likewise, as can be seen from column 320, after the second read cycle,the sorting values fields after the first read cycle (see column 318)have been updated to reflect the light settings of the images used forsuccessful decoding during the second read cycle.

In the example depicted in FIG. 32, an EMA smoothing constant of0.0392157 has been used, as calculated by assuming a period value of 50entries. In various implementations, assuming such a period value may beuseful because analysis cycles for semiconductor wafers may typicallyinclude acquisition of images for analysis of sets of 50 wafers. Inother implementations, other period values (and other smoothingconstants) may be used, as appropriate.

After a particular read cycle, an acquisition settings table (e.g., thelight settings table 202) may be sorted based on the updated EMA valuesfrom the read cycle (and previous processing). For example, the variousread cycle columns of FIG. 32 (e.g., columns 318 and 320, and so on) canrepresent stored entries for a light settings table (e.g., the lightsettings table 202) following each respective read cycle.

Based upon the EMA values depicted in FIG. 32 (or other similar values),an acquisition settings table (e.g., the light settings table 202) canbe sorted such that historically successful image acquisition (e.g.,light) settings may be prioritized in subsequent processing of images todecode symbols. As depicted in FIG. 33, for example, the light settingindex values from the index 302 (see, e.g., FIG. 32) have been sortedbased on the assigned, scaled, and averaged point values reflected inthe read cycle columns of FIG. 32. For example, as depicted in FIG. 32,after the first read cycle the light settings index 11 of index 302corresponds to the highest EMA value of column 318, followedsequentially by light settings indices 3, 6, and 9, and light settingindex 4. Accordingly, in the sorted column 318 a of FIG. 33, these lightsettings indices have been moved to the top of the sorted order. As aresult, when this sorted order is stored (or otherwise reflected) in anacquisition (e.g., light) settings table that is accessed to determineappropriate image acquisition (e.g., light) settings of images for asubsequent decoding attempt (for the same or a different symbol), theimage acquisition (e.g., light) settings corresponding to the lightsetting indices 11, 3, 6, 9 and 4 can be prioritized.

As depicted, the various columns (e.g., columns 318 a and 320 a) havebeen sorted such that the higher-scoring light settings are prioritized(i.e., moved up in the sorted order) and lower-scoring light settingsare given a lower priority (i.e., moved down in the sorted order). Inother implementations, other sorting algorithms may be used, includingas applied to other types of image acquisition settings.

In some implementations, the sorted order of the light setting index 302(e.g., as reflected in the columns 318 a and 320 a) may dictate theorder in which images are subsequently analyzed to decode a symbol. Ascan be seen in FIG. 33, however, the light settings that actuallyresulted in a successful decoding for certain read cycles, as indicatedby shaded cells, may not be highly prioritized by value-based sortingalone. For example, although light settings 8, 13, and 14 contributed toa successful decode in read cycle 8, these light settings are relativelyfar down the sorted order in sorted column 322. Accordingly, it maysometimes be useful to adjust the sorted order (e.g., as based onupdated EMA values) such that light settings that actually contribute toa successful decode (e.g., in an immediately preceding decoding attempt)are moved to a block of entries at the top of the sorted order.

Examples of such blocks of entries for each read cycle are presented ina table 324 in FIG. 34. For example, in column 326 a of the table 324, ablock 328 for read cycle 8 can include images with light settings 8, 13,and 14 because these images actually contributed to a successfuldecoding attempt in the read cycle 8 (see column 322 in FIG. 33). Theremaining light setting index values (i.e., those not included in ablock in the table 324) are presented in a table 330 of FIG. 34, sortedaccording to the EMA values presented in FIG. 32. It will be noted thatthe table 330, for a given read cycle, does not include the lightsetting index values that are included, for that read cycle, in thetable 324. For example, column 326 b of the table 330, representing asorted set of index values for read cycle 8 does not include the indexvalues 8, 13, and 14, because these values are included in the block 328of the table 324.

In order to guide selection of images for subsequent processing, thetables 324 and 330 may be combined, with various blocks (e.g., the block328) of the table 324 being maintained ahead of the index values of thecorresponding column of the table 330 in the resulting sorted order.Additionally, the sorted index values can be shifted forward by one readcycle (or more), such that the sorted index values can be viewed asprescriptive values for a subsequent read cycle as well as indicativevalues for the read cycle from which they were calculated. In this way,for example, sorted index values derived from an earlier read cycle maybe used to prioritize certain image acquisition settings for a laterread cycle.

Referring also to FIG. 35, a light setting index table 334 representsone example combination of the tables 324 and 330. As depicted, forexample, a column 326 c for a ninth read cycle (i.e., a read cyclesubsequent to the eighth read cycle) includes the block 328 of lightsetting index values from the table 324 of FIG. 34, followed by theordered index values of column 326 b from the table 330 of FIG. 34. Asalso discussed above, the order of the light setting index valuesdepicted in FIG. 35 (and, accordingly, the prioritization of lightsettings during the read cycle 9) is based on the sorted order of thecorresponding EMA values (see FIG. 32), updated to reflect theprioritization of light settings that actually resulted in a successfuldecoding for certain read cycles (see FIG. 34, block 328). Accordingly,during the read cycle 9, images having light settings corresponding tothe index values 8, 13, and 14 can be selected first for decoding,followed by images having light settings in the remaining sorted orderof the column 326 c.

Where no image has contributed to a successful decoding attempt for aparticular read cycle, the sorted order may not be updated based onlight settings of images that have actually contributed to successfuldecoding. For example, with reference to FIGS. 30, and 33-35, it can beseen that no image was successfully decoded during read cycle 6 (asreflected for read cycle 7 in FIG. 35). Accordingly, no block of lightsettings is provided in the table 324 of FIG. 34 or in the sorted orderof light settings for read cycle 7 in the table 334 (i.e., as reflectedin column 336).

Still referring to read cycles 6, it can be seen in FIG. 32 that the EMAvalues between cycle 5 (i.e., as reflected in column 338) and cycle 6(i.e., as reflected in column 340) have not changed. Because nosuccessful decoding resulted from the read cycle 6 (see FIG. 30), nopoint values have been assigned to images based on the read cycle 6, andEMA values from the read cycle 5 (column 338) have been simply carriedforward to the read cycle 6 (column 340). With reference to FIG. 35,however, it can be seen that the sorted order of the column 336,determined with reference to the results of the read cycle 6, vary fromthe sorted order of the column 342. This is because the sorted order ofthe column 342 has been updated to prioritize a block 344 of indicescorresponding to images contributing to a successful decoding attempt inread cycle 5 (see, e.g., FIGS. 30 and 34).

Referring generally to FIGS. 32 through 35, it can be seen that nouser-specified light setting (“User Entry”) has been provided for thedepicted example, However, a placeholder has been maintained for theUser Entry within the sorted table of FIG. 33 (see User Entry row 346)and the updated sorted table 334 of FIG. 35 (see User Entry row 348). Ifa user specifies a particular light setting (or aspect thereof), such aUser Entry may be prioritized in a subsequent read cycle, even abovelight settings that contributed to previously successful decodingattempts.

As noted above, it will be understood that the tables presented in FIGS.29 through 35 may not necessarily be stored in their entirety by thesystem 30 or included in their entirety in a particular table or otherrepository of the system 30 (e.g., the light settings table 202). Forexample, in some implementations, the system 30 may simply store a tablesimilar to the table 202 (see FIG. 27), a sorted order of which may beupdated after each successful read cycle based on the analysis depictedin FIGS. 29 through 35.

In some implementations, it may be useful to limit the number of imageswhich may have their data stitched together for a decoding operation.For example, for decoding operations using a two-dimensional matrixsymbol decoding tool, stitching of data from an excessive number ofimages may degrade rather than improve decoding results. Accordingly, insome implementations, a maximum number of images may be specified forassignment of point values, for a particular read cycle. If an initialset of images does not result in a successful decode before the initialset reaches the maximum number of images, a new decode attempt (withinthe same read cycle) can commence with a different set of images. Insome implementations, for example, a maximum number of eight images canbe specified, such that if a set of eight images does not result in asuccessful decode with the relevant tool, a new set of eight images maybe used for a new decoding attempt.

Even if a particular set of images does not result in a successfuldecode, however, certain images within the set may still be valuable tosubsequent decoding attempts. Accordingly, in some implementations, whenan initial set of images fails to result in a successful decodingattempt and a new set of images is assembled for a new decoding attempt,a highest scoring (one or more) image from the initial set of images canbe designated as part of (e.g., carried over as a “seed” image for) thenew set of images. In such a case, assignment of point values to imagesin the new (or other) set can be moderated based on the nature of thesuccessful decoding of the designated image from the initial image set.For example, where a seed image from an initial set of imagescontributes to a successful decoding attempt with a new set of images,the seed image can be assigned an enhanced point value (e.g., 600 of1000 points), with the remaining points (e.g., 400 of 1000 points) beingassigned among the remaining images of the new set of images.

Referring to FIG. 36, for example, a stitching analysis of an initialset 350 of images may not result in a successful decoding attempt, butan image 352 of the set 350 may score relatively highly compared to theother images 352 with respect to decoding attempts on the set 350 (e.g.,with respect to the representation of a symbol (or symbol part) in theimage 352). Because a maximum number of images (e.g., eight images) mayhave been included already in the set 350, additional images may nolonger be added to the set 350. Rather, a new set 354 of images may beobtained. Because the image 352 scored relatively highly, however, withrespect to decoding attempts on the set 350, the image 352 may becarried over into the new set 354 of images as a seed image for thatset.

In some implementations, other operations can be implemented in order touse information from an image of the initial set 350 of images inconjunction with information from images acquired for the new set 354 ofimages. For example, after a highest (or otherwise relatively highly)scoring image of the initial set 350 has been identified, that image canitself be designated for the new set 354 or another image that wasacquired with the same acquisition settings as the highest scoring imagecan be designated for the new set 354. The designated image (e.g., theimage 352 or a similarly-acquired other image) can be actually saved aspart of the new set 354, or information from the designated image can beused along with information from other images in the new set 354 withoutsaving the image 352 as part of the new set 354. As an example of thelatter case, where the image 352 has been designated for the new set354, the image 352 can be processed for decoding without necessarilybeing saved in its entirety as part of the new set 354. Results of theprocessing of the image 352 can then be used in combination with resultsof processing of other images in the new set 354 to attempt to decode arelevant symbol.

In some implementations, particular strategies may be used for assigningpoints to images analyzed using an OCR tool. For example, if an imageallows for successful decoding of one or more characters at particularpositions, the image can be assigned a percentage of available pointsper character. For example, where a twelve-character string of text isto be decoded, an image that allows for successful decoding of one ormore characters of the string can be assigned approximately 8.3% of theavailable points per character.

As another example, if one image allows for successful decoding of anentire string of characters, the one image may be assigned the totalamount of available points. However, if one image allows for successfuldecoding of string but one or more other images allow for successfuldecoding of particular characters of the string, point values may beassigned among each of the contributing images. For example, an imageproviding for successful decoding of the string as a whole can beassigned a fixed percentage (generically, X percent) of the pointsavailable and the other image (or images) can be assigned pointscalculated as

Points=1/(C _(T))·(100−X)/100·C _(D)),  (2)

where C_(T) indicates the total number of characters in the string andC_(D) indicates the number of characters decoded based on the image towhich the points are to be assigned.

In some implementations, the number of available image acquisition(e.g., light) settings may change over the course of an operation orseries of operations. For example, with respect to the system 30, a usermay be able to enable or disable auxiliary light settings, such that thenumber of available light settings can change depending on user input.When a table of EMA values for various light (or other imageacquisition) settings has been constructed (e.g., as discussed above),and additional light (or other image acquisition) settings becomeavailable, it may be useful to ensure that the sum of the EMA values,including those for the additional light (or other image acquisition)settings, remains equal to the maximum number of points (e.g., 1000points, in the examples above). Accordingly, when additional light (orother image acquisition) settings become available, the additional light(or other image acquisition) settings can be initially assigned EMAvalues of zero.

Similarly, when a table of EMA values for various image acquisition(e.g., light) settings has been constructed (e.g., as discussed above),and some of the image acquisition (e.g., light) settings are madeunavailable for subsequent decoding operations, the EMA values for thenewly unavailable image acquisition (e.g., light) settings can bedistributed among the remaining image acquisition (e.g., light)settings. In this way, for example, the sum of EMA values for availableimage acquisition (e.g., light) settings remains equal to the maximumnumber of points. Further, if the EMA values for the newly unavailableimage acquisition (e.g., light) settings are distributed evenly amongthe remaining image acquisition (e.g., light) settings, a current sortedorder of the remaining image acquisition (e.g., light) settings (e.g.,as based on the EMA values) can be maintained.

In some implementations, each decoding tool can provide aResultContributors vector via a getter function in both the success andfailure case, including under the following instructions:

struct ImageContribution { unsigned ImageIndex; unsigned Weight; };typedef std::vector<ImageContribution> ResultContributors; constResultContributors& getResultContributors( );

As such, the sets returned by the tool can include an image index (e.g.,as may indicate a light (or other image acquisition) setting, similar tothe index 302 of FIG. 29) and the point value that the tool may haveassigned to the image.

In some implementations, the image index returned by the tool canindicate the order with which a particular image was passed to the toolfor analysis (or a corresponding location of the relevant imageacquisition setting in an image acquisition setting table). For example,if an image exhibiting light settings corresponding to the seventh entryof a light settings table is passed to a tool and this image contributesto the decode then the image index value can be returned with a value of7.

In some embodiments, for a failure case of analysis of a set of imagesby a tool, an image that is deemed the best for display by the tool canbe assigned a maximum point value (e.g., a point value of 1000) and theremaining images in the set will receive a value of 0. In otherembodiments, no points may be assigned to any image for an unsuccessfuldecoding attempt.

Under the example instructions presented above, when a tool successfullydecodes a symbol in a particular read cycle, the ResultContributorsvector may address only to the images that contributed to the successfuldecoding. In a failure case, however, other images may be addressed.

In some implementations, sorting similar to that described above withrespect to acquisition settings can be used with regard topost-acquisition processing. For example, different post-acquisitionprocessing (e.g., application of different image filter settings orregion of interest adjustments) can be applied to different acquiredimages. A post-acquisition settings order can be determined based uponthe contribution of the various post-processed images to a decodingattempt for the images, with post-acquisition processing settings forimages having stronger contributions to a decoding attempt beingassigned a higher impact (e.g., larger) point value thanpost-acquisition processing settings for images having weakercontributions to the decoding attempt. In some implementations, thisassignment of points can proceed in similar ways to the assignment ofpoints discussed above for acquisition order.

Once determined, the post-acquisition settings order can then be used toguide subsequent decoding attempts. For example, the post-acquisitionsettings order (e.g., as updated for successive read cycles) may be usedto determine an order of application of post-acquisition processing toimages that will be subject to a new decoding attempt, or to prioritizedecoding attempts for certain images that have already been processedwith particular post-acquisition processing settings.

Referring again to FIGS. 34 and 35, for example, different types ofpost-processing may have been applied to the images with light settings8, 13, and 14 during read cycle 8, which may at least partly contributeto the relative contributions of those images to a decode attempt andthe corresponding elevated point assignments for those images. Based onthe point assignments, and the particular types of post-processing usedfor particular images, a post-acquisition processing settings order canbe determined for particular types of post-processing or particularimages. During read cycle 9, particular post-acquisition processing canthen be applied to acquired images, or particular post-processed imagesprioritized for decoding, based on the post-acquisition processingsettings order. For example, post-acquisition processing settings for anew image can be determined based upon the prioritization of thesettings in the post-acquisition processing settings order.

In some implementations, a determined acquisition-settings order caninform a processing order (e.g., an order in which images are processedto attempt to decode a symbol) as an alternative (or in addition to)informing an acquisition order. For example, still referring to FIG. 35,an acquisition-settings order for the read cycle 10 may prioritize, inorder, the acquisition settings indicated by index values 5, 8, 7, and3. In some implementations, processing to attempt to decode images fromthe read cycle 10 can be implemented based upon this order (i.e., 5, 8,7, then 3) even if the images for the read cycle 10 were acquired with adifferent order of acquisition settings (e.g., 8, 7, 5, then 3). In thisregard, therefore, the acquisition-settings order represented in FIG. 35can alternatively (or additionally) be viewed as a processing order foracquired images, which can specify the order in which images acquiredwith particular acquisition settings can be processed to attempt todecode symbols represented therein.

Although the present technology has been described with reference topreferred embodiments, workers skilled in the art will recognize thatchanges may be made in form and detail without departing from the spiritand scope of the technology. For example, the present technology is notlimited to the embodiments of 2D data matrix symbols, and may bepracticed with other machine readable symbol technology.

The specific methods described herein can be generalized to handheldapplications, and the correspondence methods described herein can begeneralized to pattern alignment applications.

The technology disclosed here can be applied to stitching data for otherID application such as OCR reading from multiple images. A known methodof OCR reading from multiple images is to select read characters withthe highest score from individual images. The known method requiresindividual characters to be readable from at least one image. With thistechnology, the character reading can occur after the individual strokesof a character are combined from multiple images.

The particular embodiments disclosed above are illustrative only, as thetechnology may be modified and practiced in different but equivalentmanners apparent to those skilled in the art having the benefit of theteachings herein. Furthermore, no limitations are intended to thedetails of construction or design herein shown, other than as describedin the claims below. It is therefore evident that the particularembodiments disclosed above may be altered or modified and all suchvariations are considered within the scope and spirit of the technology.Accordingly, the protection sought herein is as set forth in the claimsbelow.

What is claimed is:
 1. A system for decoding a symbol using images ofthe symbol, the system comprising: an imaging device configured toacquire multiple images, each of the acquired images including arespective symbol data region; a processor operatively coupled to theimaging device, the processor configured to: receive a first pluralityof images for a first read cycle of the system, the first plurality ofimages being acquired by the imaging device in a first acquisition orderusing respective acquisition settings, the first plurality of imagesincluding first and second images that are acquired, respectively, usingfirst and second acquisition settings determined according to an initialacquisition-settings order; execute a data stitching algorithmincluding: generating a synthetic model of the symbol, the syntheticmodel being a model of a plurality of known features of the symbol;comparing the synthetic model of the symbol with at least the first andsecond images; converting a first symbol data region of the first imageinto a first binary matrix and converting a second symbol data region ofthe second image into a second binary matrix; and at least partlycombining the first binary matrix with the second binary matrix togenerate a combined binary matrix, the combined binary matrix being adecodable representation of the symbol; attempt to decode the symbolbased at least partly upon the combined binary matrix; and receive asecond plurality of images for a second read cycle of the system, thesecond plurality of images being acquired by the imaging device in asecond acquisition order using updated acquisition settings that aredetermined according to an updated acquisition-settings order, theupdated acquisition-settings order being determined based at leastpartly upon first and second contributions of the first and secondimages, respectively, to the attempt to decode the symbol.
 2. The systemof claim 1, wherein, when the first image contributes to a successfuldecoding of the symbol to a greater extent than the second imagecontributes to the successful decoding of the symbol, the firstacquisition settings are determined to be ahead of the secondacquisition settings in the updated acquisition-settings order.
 3. Thesystem of claim 1, wherein when a user specifies acquisition settingsfor the second read cycle that differ from the first and secondacquisition settings, the user-specified acquisition settings aredetermined to be ahead of the first and second acquisition settings inthe updated acquisition-settings order.
 4. The system of claim 1,wherein, to determine the updated acquisition-settings order based atleast partly upon the first and second contributions, the processor isfurther configured to: assign for the first and second acquisitionsettings, respectively, point values associated with the first andsecond contributions; calculate a respective average, for each of thefirst and second acquisition settings, based at least partly uponrespective previously determined scores for the first and second initialacquisition settings and based at least partly upon the respective pointvalues assigned for the first and second acquisition settings; anddetermine the updated acquisition-settings order based at least partlyupon the calculated averages.
 5. The system of claim 4, wherein minimalimpact points are assigned for at least one of the first and secondacquisition settings based at least partly upon the corresponding atleast one of the first and second images not contributing to asuccessful decoding of the symbol.
 6. The system of claim 4, wherein theaverages are calculated only if the attempt to decode the symbol resultsin a successful decoding of the symbol for the first read cycle.
 7. Thesystem of claim 4, wherein the calculation of the averages is based atleast partly upon the processor accessing a stored acquisition settingstable including a number of table entries, each table entry including anacquisition settings field and a sorting value field, the sorting valuefield for a particular table entry indicating, respectively, thepreviously determined score for the acquisition settings indicated bythe acquisition settings field for the particular table entry.
 8. Thesystem of claim 7, wherein the processor is further configured to updatethe entries of the sorting value field, respectively, based at leastpartly upon the calculated averages; and wherein the updatedacquisition-settings order is determined based at least partly upon theupdated entries of the sorting value field.
 9. The system of claim 1,wherein to determine the updated acquisition-settings order, theprocessor is further configured to: set a maximum number of images for agiven decoding attempt; identify a first subset of the first pluralityof images that contains the maximum number of images; process the firstsubset of images to attempt to decode the symbol; if the processing ofthe first subset results in a successful decoding of the symbol, assignpoint values for the acquisition settings used to acquire the images ofthe first subset; and if processing of the first subset does not resultin a successful decode: identify a highest scoring image of the firstsubset, the highest scoring image having been acquired with particularacquisition settings; designate, as part of a second subset of the firstplurality of images that contains the maximum number of images, at leastone of the highest scoring image of the first subset and another imageacquired with the particular acquisition settings; process the secondsubset of images to attempt to decode the symbol; and if the processingof the second subset results in a successful decode, assign point valuesfor the acquisition settings used to acquire the images of the secondsubset.
 10. A method for decoding a symbol using images of the symbol,the method comprising: generating a synthetic model of the symbol, thesynthetic model being a model of a plurality of known features of thesymbol; acquiring, using an imaging device, a first image and a secondimage for a first read cycle, the first image being acquired using firstacquisition settings and including a first symbol data region, and thesecond image being acquired using second acquisition settings andincluding a second symbol data region; comparing the synthetic model ofthe symbol with the first image and extracting a first binary matrix;comparing the synthetic model of the symbol with the second image andextracting a second binary matrix; at least partly combining the firstbinary matrix with the second binary matrix; and generating a combinedbinary matrix, the combined binary matrix being a decodablerepresentation of the symbol; attempting to decode the symbol based atleast partly upon the combined binary matrix; identifying first andsecond contributions, respectively, of the first and second images tothe attempt to decode the symbol; determining an updatedacquisition-settings order for at least the first and second acquisitionsettings, based at least partly upon the first and second contributions;and causing the imaging device to acquire a third image for a secondread cycle, the third image being acquired using third acquisitionsettings that are determined based at least partly upon the updatedacquisition-settings order.
 11. The method of claim 10, wherein, whenthe first image contributes to a successful decoding of the symbol to agreater extent than the second image contributes to the successfuldecoding of the symbol, the first acquisition settings are determined tobe ahead of the second acquisition settings in the updatedacquisition-settings order.
 12. The method of claim 10, wherein when auser specifies acquisition settings for the second read cycle, theuser-specified acquisition settings are determined to be ahead of thefirst and second acquisition settings in the updatedacquisition-settings order.
 13. The method of claim 10, whereindetermining the updated acquisition-settings order based at least partlyupon the first and second contributions includes: assigning to the firstand second acquisition settings, from a predefined number of totalpoints, point values associated with the first and second contributions,respectively; calculating a respective moving average, for each of thefirst and second acquisition settings, based at least partly uponrespective previously determined scores for the first and second initialacquisition settings and based at least partly upon the respective pointvalues assigned for the first and second acquisition settings; anddetermining the updated acquisition-settings order based at least partlyupon the calculated moving averages.
 14. The method of claim 13, whereinminimal impact points are assigned for at least one of the first andsecond acquisition settings based at least partly upon the correspondingat least one of the first and second images not contributing to asuccessful decoding of the symbol.
 15. The method of claim 13, whereinthe moving averages are calculated only if the attempt to decode thesymbol results in a successful decoding of the symbol for the first readcycle.
 16. The method of claim 10, wherein at least one of the first,second, and third acquisition settings specifies at least one of a lightmode, image exposure, image gain, and image offset.
 17. The method ofclaim 10, wherein the attempt to decode the symbol is further based atleast partly upon applying post-acquisition processing to the first andsecond images according to first and second post-acquisition processingsettings, respectively, the first and second post-acquisition processingsettings including one or more of an image filter setting and a regionof interest adjustment; wherein the method further includes determiningan updated post-acquisition settings order based at least partly uponthe first and second contributions; and wherein the third image isprocessed, after being acquired, using third post-acquisition processingsettings determined based at least partly upon the updatedpost-acquisition settings order.
 18. A method for decoding a symbolusing images of the symbol, wherein first images have been acquired in afirst acquisition order with an imaging device using an initial sequenceof respective acquisition settings that is determined based at leastpartly upon an initial acquisition-settings order, the methodcomprising: processing the first images to attempt to decode the symbolby, at least in part, stitching image data from two or more of the firstimages; identifying, for at least one of the two or more of the firstimages that was acquired using at least one of the initial acquisitionsettings, a corresponding at least one contribution to the attempt todecode the symbol; determining an updated acquisition-settings order forthe collective initial acquisition settings based at least partly uponthe at least one contribution; and at least one of acquiring secondimages, with the imaging device, using an updated sequence of secondacquisition settings that is determined based at least partly upon theupdated acquisition-settings order and processing the second images in adecoding attempt using a processing order that is determined based atleast partly upon the updated acquisition-settings order.
 19. The methodof claim 18, wherein the attempt to decode the symbol includes applyingpost-acquisition processing to the two or more of the first images basedat least partly upon an initial post-acquisition settings order; whereinthe method further includes determining an updated post-acquisitionsettings order based at least partly upon the at least one contribution;and wherein the second images are processed, after being acquired, basedat least partly upon the updated post-acquisition settings order. 20.The method of claim 19, wherein the post-acquisition processing includesat least one of applying one or more image filters to at least one ofthe two or more of the first images and adjusting one or more regions ofinterest for at least one of the two or more of the first images; andwherein the initial and updated post-acquisition settings ordersindicate, respectively, initial and updated orders for the at least oneof applying one or more image filters and adjusting one or more regionsof interest.
 21. A system for decoding a symbol using images of thesymbol, the system comprising: an imaging device configured to acquiremultiple images, each of the acquired images including a respectivesymbol data region; a processor operatively coupled to the imagingdevice, the processor configured to: receive a first plurality of imagesfor a first read cycle of the system, the first plurality of imagesbeing acquired by the imaging device in a first acquisition order usingrespective acquisition settings, the first plurality of images includingfirst and second images that are acquired, respectively, using first andsecond acquisition settings determined according to an initialacquisition-settings order; execute a data stitching algorithmincluding: generating a synthetic model of the symbol, the syntheticmodel being a model of a plurality of known features of the symbol;comparing the synthetic model of the symbol with at least the first andsecond images; converting a first symbol data region of the first imageinto a first binary matrix and converting a second symbol data region ofthe second image into a second binary matrix; and at least partlycombining the first binary matrix with the second binary matrix togenerate a combined binary matrix, the combined binary matrix being adecodable representation of the symbol; attempt to decode the symbolbased at least partly upon the combined binary matrix; and receive asecond plurality of images for a second read cycle of the system, thesecond plurality of images being processed for decoding in a processingorder, the processing order being determined based at least partly uponfirst and second contributions of the first and second images,respectively, to the attempt to decode the symbol.
 22. The system ofclaim 21, wherein, when the first image contributes to a successfuldecoding of the symbol to a greater extent than the second imagecontributes to the successful decoding of the symbol, images acquiredwith the first acquisition settings are determined to be ahead of imagesacquired with the second acquisition settings in the processing order.23. The system of claim 21, wherein when a user specifies acquisitionsettings for the second read cycle, images acquired with theuser-specified acquisition settings are prioritized in the processingorder.
 24. The system of claim 21, wherein, to determine the processingorder based at least partly upon the first and second contributions, theprocessor is further configured to: assign for the first and secondacquisition settings, respectively, point values associated with thefirst and second contributions; calculate a respective average, for eachof the first and second acquisition settings, based at least partly uponrespective previously determined scores for the first and second initialacquisition settings and based at least partly upon the respective pointvalues assigned for the first and second acquisition settings; anddetermine the processing order based at least partly upon the calculatedaverages.
 25. The system of claim 24, wherein minimal impact points areassigned for at least one of the first and second acquisition settingsbased at least partly upon the corresponding at least one of the firstand second images not contributing to a successful decoding of thesymbol.
 26. The system of claim 24, wherein the averages are calculatedonly if the attempt to decode the symbol results in a successfuldecoding of the symbol for the first read cycle.
 27. The system of claim24, wherein the calculation of the averages is based at least partlyupon the processor accessing a stored acquisition settings tableincluding a number of table entries, each table entry including anacquisition settings field and a sorting value field, the sorting valuefield for a particular table entry indicating, respectively, thepreviously determined score for the acquisition settings indicated bythe acquisition settings field for the particular table entry.
 28. Thesystem of claim 27, wherein the processor is further configured toupdate the entries of the sorting value field, respectively, based atleast partly upon the calculated averages; and wherein the processingorder is determined based at least partly upon the updated entries ofthe sorting value field.
 29. The system of claim 21, wherein todetermine the processing order, the processor is further configured to:set a maximum number of images for a given decoding attempt; identify afirst subset of the first plurality of images that contains the maximumnumber of images; process the first subset of images to attempt todecode the symbol; if the processing of the first subset results in asuccessful decoding of the symbol, assign point values for theacquisition settings used to acquire the images of the first subset; andif processing of the first subset does not result in a successfuldecode: identify a highest scoring image of the first subset, thehighest scoring image having been acquired with particular acquisitionsettings; designate, as part of a second subset of the first pluralityof images that contains the maximum number of images, at least one ofthe highest scoring image of the first subset and another image acquiredwith the particular acquisition settings; process the second subset ofimages to attempt to decode the symbol; and if the processing of thesecond subset results in a successful decode, assign point values forthe acquisition settings used to acquire the images of the secondsubset.